package com.example.dblibrary.app.dbManager;

import com.example.dblibrary.database.entities.Singer;
import com.example.dblibrary.database.entities.Song;
import com.example.dblibrary.mvp.BaseMvp.BaseContract;

import java.util.List;

import io.reactivex.Flowable;

public interface DbContract extends BaseContract {

    interface BaseHomePresenter extends BasePresenter {

        Flowable<List<Singer>> loadSingerByDim(int start, int offset,int type,String typeContent, int area, String areaContent, int firstSpell, String firstSpellContent, int handleSpell, String handleSpellContent);


        Flowable<List<Song>> loadSongByDim(int start, int offset, int category, int categoryContent, int firstSpell, String firstSpellContent, int handleSpell, String handleSpellContent, int state);

    }

    interface BaseHomeModel extends BaseModel {

        Flowable<List<Singer>> loadSingerByOffset(int start, int offset);

        Flowable<List<Singer>> loadSingerByDim(int start, int offset,int type,String typeContent, int area, String areaContent, int firstSpell, String firstSpellContent, int handleSpell, String handleSpellContent);


        Flowable<List<Song>> loadSongByDim(int start, int offset, int category, int categoryContent, int firstSpell, String firstSpellContent, int handleSpell, String handleSpellContent, int state);


        Flowable<List<Song>> loadSongsByBatch(int start, int offset, int state, List<Integer> nums);
    }


    interface BaseHomeView extends BaseView {


        void showingDailog();

        void laodingData();

        void loadedData();

        void hidingDailog();

        void refreshSinger(List<Singer> singers);
//
        void refreshSingerByDim(List<Singer> singers);
//
//        void refreshSongsByDIm(List<Song> songs);
//
//        void refreshSongsByBatch(List<Song> songs);

    }
}
